home *** CD-ROM | disk | FTP | other *** search
/ AppleDisk Magazine Miscellaneous Programs / AppleDisk_Misc_Programs_1.dsk / AGGIUNGI SETTORI.bas next >
Encoding:
BASIC Source File  |  1987-01-01  |  8.6 KB  |  212 lines

  1. 10  REM   **********************
  2. 20  REM   *                    *
  3. 30  REM   *  RECUPERA SPAZIO   *  
  4. 40  REM   * DI CHRISTOPER BOCK *
  5. 50  REM   * COPYRIGHT 1989 BY  *
  6. 60  REM   *   APPLEDISK &      * 
  7. 70  REM   * MICROSPARC, INC.   *
  8. 80  REM   *                    *
  9. 90  REM   **********************
  10. 100  REM   POKE DEL PROGRAMMA LINGUAGGIO MACCHINA  IN $4000
  11. 110  TEXT : HOME : NORMAL : VTAB 7: PRINT "ATTENDI, STO INSTALLANDO IL CODICE IN   LINGUAGGIO MACCHINA...":TV3 = 0
  12. 120  FOR V1 = 16384 TO 16413
  13. 130  READ V2
  14. 140  POKE V1,V2
  15. 150 V3 = V3 +V2
  16. 160  NEXT 
  17. 170  FOR V1 = 24576 TO 24648: REM  POKE DEL PROGRAMMA BOOT IN $6000
  18. 180  READ V2
  19. 190  POKE V1,V2
  20. 200 V3 = V3 +V2
  21. 210  NEXT 
  22. 220  REM   SE I DATI SONO ERRATI ARRESTA IL PROGRAMMA
  23. 230  IF V3 < >11452  THEN : PRINT : PRINT  CHR$(7);"C'E' UN ERRORE NEI DATI": PRINT "CONTROLLA LE BATTUTE E RIESEGUI IL      PROGRAMMA": END 
  24. 240  REM   POKE DEL MESSAGGIO NEL PROGRAMMA IN LINGUAGGIO MACCHINA
  25. 250 A$ = "QUESTO DISCO NON HA IL DOS. INSERISCINE UNO CON IL DOS, PREMI <RETURN>        ": REM   7 SPAZI  
  26. 260  FOR V1 = 1 TO  LEN(A$)
  27. 270  POKE 24648 +V1, ASC( MID$ (A$,V1,1)) +128
  28. 280  NEXT 
  29. 290  REM   STAMPA LA PRESENTAZIONE
  30. 300  TEXT : HOME 
  31. 310  PRINT  SPC( 11);"RECUPERA SPAZIO": PRINT  SPC( 9);"SCRITTO DA CHRISBOCK": PRINT " (C) 1989 APPLEDISK & MICROSPARC, INC": PRINT 
  32. 320  PRINT "   RECUPERA SPAZIO MODIFICA I NORMALI"
  33. 330  PRINT "DISCHETTI IN DOS 3.3 LIBERANDO PIU'"
  34. 340  PRINT "SPAZIO PER MEMORIZZARE DATI. PUOI"
  35. 350  PRINT "LIBERARE I SEGUENTI SETTORI:"
  36. 360  PRINT 
  37. 370  PRINT "DOS - 32 SETTORI"
  38. 380  PRINT "SETTORI DI NORMA NON USATI - 11 SETTORI"
  39. 390  PRINT "SETTORI DI CATALOGO - FINO A 13 SETTORI"
  40. 400  PRINT 
  41. 410  REM   AZZERA I FLAG DI OPZIONE
  42. 420 DOS = 0:FR = 0:DIR = 0:DS = 0
  43. 430  REM   OPZIONE 1
  44. 440  VTAB 14: CALL  -958: PRINT "VUOI LIBERARE I SETTORI OCCUPATI"
  45. 450  PRINT "DAL DOS? (CIO' RENDE IMPOSSIBILE IL     BOOTING DEL DISCHETTO) ": VTAB 22: PRINT "PREMI <ESC> PER FINIRE IL PROGRAMMA": VTAB 16: HTAB 28
  46. 460  GET A$: IF A$ =  CHR$(27)  THEN  TEXT : HOME : PRINT : PRINT  CHR$(4);"RUN APDSK": END 
  47. 470  PRINT A$
  48. 480  IF A$ = "S"  OR A$ =  CHR$(115)  THEN DOS = 1: GOTO 570
  49. 490  ON A$ < >"N"  AND A$ < > CHR$(110) GOTO 440: PRINT 
  50. 500  REM   OPZIONE 2
  51. 510  VTAB 14: CALL  -958: PRINT "VUOI LIBERARE GLI UNDICI SETTORI"
  52. 520  PRINT "DI NORMA NON USATI? ": VTAB 22: PRINT "PREMI <ESC> PER RICOMINCIARE  ": VTAB 15: HTAB 21
  53. 530  REM  
  54. 540  GET A$: IF A$ =  CHR$(27)  THEN  HTAB 1: GOTO 420
  55. 550  PRINT A$
  56. 560  IF A$ = "S"  OR A$ =  CHR$(121)  THEN FR = 1: PRINT : GOTO 590
  57. 570  ON A$ < >"N"  AND A$ < > CHR$(110) GOTO 510
  58. 580  REM   OPZIONE 3
  59. 590  VTAB 14: CALL  -958: PRINT "VUOI LIBERARE QUALCUNO DEI"
  60. 600  PRINT "SETTORI DI CATALOGO? ": VTAB 22: PRINT "PREMI <ESC> PER RICOMINCIARE  ": VTAB 15: HTAB 22
  61. 610  GET A$: IF A$ =  CHR$(27)  THEN  HTAB 1: GOTO 420
  62. 620  PRINT A$
  63. 630  IF A$ = "N"  OR A$ =  CHR$(110) GOTO 710
  64. 640  ON A$ < >"S"  AND A$ < > CHR$(121) GOTO 590:DIR = 1
  65. 650  VTAB 17: CALL  -958
  66. 660  PRINT "QUANTI SETTORI DI CATALOGO VUOI AVERE? (7 NOMI FILE/SETTORE)";
  67. 670  INPUT DS
  68. 680  IF DS <2  OR DS >14  THEN  PRINT  CHR$(7): GOTO 650
  69. 690  REM  
  70. 700  REM   STAMPA LE OPZIONI SCELTE
  71. 710  HOME 
  72. 720  IF DOS +FR +DIR = 0  THEN  END 
  73. 730  PRINT  SPC( 13);"AGGIUNGI SETTORI"
  74. 740  PRINT 
  75. 750  PRINT "HAI SCELTO DI LIBERARE"
  76. 760  PRINT 
  77. 770  IF DOS = 1  THEN  PRINT "I SETTORI DEL DOS"
  78. 780  IF FR = 1  THEN  PRINT "GLI 11 SETTORI DI NORMA NON USATI"
  79. 790  IF DIR = 0  THEN 820
  80. 800  PRINT 15 -DS;" SETTORE";: IF DS <14  THEN  PRINT "/I";
  81. 810  PRINT " DAL CATALOGO"
  82. 820  REM   AVVIO
  83. 830  POKE 34,10
  84. 840  IF DOS = 0  THEN 1190
  85. 850  HOME 
  86. 860  VTAB 12
  87. 870  PRINT "IMMETTI IL MESSAGGIO DA VISUALIZZARE"
  88. 880  PRINT "AL BOOTING DI QUESTO DISCHETTO."
  89. 890  INPUT A$
  90. 900  IF A$ = ""  AND  LEN(B$) >0  THEN A$ =  RIGHT$(B$,40):B$ =  LEFT$(B$,1): GOTO 950
  91. 910  PRINT 
  92. 920  PRINT "LO VUOI NORMALE, LAMPEGGIANTE,"
  93. 930  PRINT "O NEGATIVO? (N/F/I)";
  94. 940  GET B$
  95. 950  IF B$ = "N"  OR B$ =  CHR$(110)  THEN V2 = 128: GOTO 990
  96. 960  IF B$ = "F"  OR B$ =  CHR$(102)  THEN V2 = 0: GOTO 990
  97. 970  IF B$ = "I"  OR B$ =  CHR$(105)  THEN V2 =  -64: GOTO 990
  98. 980  GOTO 940
  99. 990  IF  LEN(A$) >40  THEN 850
  100. 1000  IF  LEN(A$) = 40  THEN 1100
  101. 1010  FOR V1 = 1 TO 20 - INT( LEN(A$)/2)
  102. 1020 A$ = " " +A$
  103. 1030  NEXT 
  104. 1040  FOR V1 =  LEN(A$) +1 TO 40
  105. 1050 A$ = A$ +" "
  106. 1060  NEXT 
  107. 1070 B$ = B$ +A$
  108. 1080  VTAB 8: HTAB 1
  109. 1090  PRINT  SPC( 10);"MESSAGGIO DI BOOTING"
  110. 1100  FOR V1 = 1 TO 40
  111. 1110 V3 =  ASC( MID$ (A$,V1,1))
  112. 1120  IF V3 = 32  THEN V3 = 160: GOTO 1150
  113. 1130  IF V2 < >128  AND V3 <64  THEN V3 = V3 +64
  114. 1140 V3 = V3 +V2
  115. 1150  POKE 24721 +V1,V3
  116. 1160  POKE 1063 +V1,V3
  117. 1170  NEXT 
  118. 1180  PRINT 
  119. 1190  HOME : VTAB 12: IF DIR  THEN  PRINT  CHR$(7); CHR$(7);"ATTENZIONE! NON LIBERARE SETTORI DI     CATALOGO SU UN DISCHETTO CONTENENTE FILE": PRINT : PRINT 
  120. 1200  PRINT "INSERISCI IL DISCHETTO DA MODIFICARE"
  121. 1210  PRINT "NEL DRIVE 1, E PREMI <RETURN> PER ": PRINT "CONTINUARE, O <ESC> PER FERMARE"
  122. 1220  POKE  -16368,0
  123. 1230 V1 =  PEEK( -16384)
  124. 1240  IF V1 = 155  THEN  POKE  -16368,0: GOTO 300
  125. 1250  IF V1 < >141  THEN 1230
  126. 1260  POKE  -16368,0
  127. 1270  REM   READ VTOC INTO $5000-$50FF
  128. 1280  POKE 16398,0: REM   SETTORE 
  129. 1290  POKE 16397,17: REM   TRACCIA  
  130. 1300  POKE 16405,1: REM   LETTURA
  131. 1310  POKE 16402,80: REM   BUFFER
  132. 1320  CALL 16384
  133. 1330  GOSUB 1860
  134. 1340  GOSUB 1980
  135. 1350  IF DOS = 0  THEN 1430
  136. 1360  REM   OPZIONE 1: APRE LE TRACCE DEL DOS (1-2)
  137. 1370  FOR V1 = 1 TO 2
  138. 1380  POKE 20536 +V1 *4,255
  139. 1390  POKE 20537 +V1 *4,255
  140. 1400  NEXT 
  141. 1410  POKE 20676,127
  142. 1420  REM   OPZIONE 2: APRE 11 SETTORI SULLA TRACCIA 2
  143. 1430  IF FR = 1  THEN  POKE 20544,255: POKE 20545,224: POKE 20677,127
  144. 1440  IF DIR = 0  THEN 1630
  145. 1450  REM   OPZIONE 3: APRE NEL CATALOGO IL NUMERO DI SETTORI SCELTO
  146. 1460 V1 = 2 ^(16 -DS) -2
  147. 1470 V2 =  INT(V1/256)
  148. 1480 V1 = V1 -V2 *256
  149. 1490  POKE 20678,142 -DS
  150. 1500  REM   RISCRIVE LA VTOC SUL DISCHETTO
  151. 1510  POKE 20604,V2
  152. 1520  POKE 20605,V1
  153. 1530  POKE 16405,2: REM   SCRITTURA
  154. 1540  CALL 16384
  155. 1550  GOSUB 1860
  156. 1560  REM   FISSA A ZERO I BYTE DI COLLEGAMENTO DEL CATALOGO
  157. 1570  POKE 16398,16 -DS: REM   SETTORE
  158. 1580  POKE 16405,1: REM   LETTURA
  159. 1590  CALL 16384
  160. 1600  GOSUB 1860
  161. 1610  POKE 20481,0
  162. 1620  POKE 20482,0
  163. 1630  REM    SALVA LA VTOC O IL CATALOGO SUL DISCO, A SECONDA DEL VALORE DELLA VARIABILE DIR (LINE 1440)   
  164. 1640  POKE 16405,2: REM   SCRITTURA
  165. 1650  CALL 16384
  166. 1660  GOSUB 1860
  167. 1670  IF DOS = 0  THEN 1740
  168. 1680  REM   SE E' SCELTA L'OPZIONE 1 SALVA IL PROGRAMMA DI BOOTING SULLA TRACCIA 0, SETTORE 0
  169. 1690  POKE 16398,0: REM   SETTORE
  170. 1700  POKE 16397,0: REM   TRACCIA
  171. 1710  POKE 16402,96: REM   BUFFER 
  172. 1720  CALL 16384
  173. 1730  GOSUB 1860
  174. 1740  HOME 
  175. 1750  VTAB 12
  176. 1760  PRINT "VUOI MODIFICARE UN ALTRO DISCHETTO? ";
  177. 1770  GET A$
  178. 1780  PRINT A$
  179. 1790  IF A$ = "N"  THEN  END 
  180. 1800  PRINT 
  181. 1810  PRINT "VUOI LASCIARE LE OPZIONI STABILITE"
  182. 1820  PRINT "COME SONO ADESSO?";
  183. 1830  GET A$
  184. 1840  IF A$ = "N"  OR A$ =  CHR$(118)  THEN 300
  185. 1850  GOTO 820
  186. 1860  REM   ROUTINE DI CONTROLLO DEGLI ERRORI DI DISCHETTO
  187. 1870 V1 =  PEEK(16406)
  188. 1880  IF V1 < >16  AND V1 < >64  AND V1 < >128  THEN  RETURN 
  189. 1890  POKE 16406,0
  190. 1900  TEXT : HOME 
  191. 1910  VTAB 11
  192. 1920  IF V1 = 16  THEN  PRINT "IL DISCHETTO E' PROTETTO IN SCRITTURA,": PRINT "TOGLI LA LINGUETTA DI PROTEZIONE"
  193. 1930  IF V1 = 64  THEN  PRINT "ERRORE DI DRIVE"
  194. 1940  IF V1 = 128  THEN  PRINT "ERRORE DI LETTURA"
  195. 1950  PRINT  CHR$(7); CHR$(7)
  196. 1970  POP : VTAB 22: PRINT "PREMI <RETURN> PER CONTINUARE": POKE  -16368,0: GET A$: PRINT A$: POKE  -16368,0: GOTO 300
  197. 1980  IF  PEEK(20676) < >127  AND  PEEK(20677) < >127  AND ( PEEK(20678) <127  OR  PEEK(20678) >141)  THEN  RETURN 
  198. 1990  TEXT 
  199. 2000  HOME 
  200. 2010  VTAB 9
  201. 2020  IF  PEEK(20676) = 127  AND DOS = 1  THEN  PRINT "IL DOS E' GIA' STATO TOLTO DA QUESTO    DISCHETTO": PRINT 
  202. 2030  IF ( PEEK(20676) = 127  OR  PEEK(20677) = 127)  AND FR = 1  THEN  PRINT "GLI UNDICI SETTORI DELLA TRACCIA 2 SONO": PRINT "GIA' STATI LIBERATI SU QUESTO DISCHETTO.": PRINT 
  203. 2040  IF  PEEK(20677) = 127  AND DOS = 1  THEN  PRINT "TOGLIENDO IL DOS DA QUESTO DISCHETTO SI": PRINT "AVREBBE INTERFERENZA CON SETTORI GIA'   LIBERATI IN PRECEDENZA.": REM   3 SPAZI
  204. 2050 V1 =  PEEK(20678) -127
  205. 2060  IF V1 >0  AND V1 <15  AND DIR = 1  THEN  PRINT V1;" SETTORI SONO GIA' STATI LIBERATI": PRINT "DAL CATALOGO DEL DISCHETTO.": PRINT 
  206. 2070  POP 
  207. 2080  VTAB 22: PRINT "PREMI <RETURN> PER CONTINUARE": POKE  -16368,0: GET A$: PRINT A$: POKE  -16368,0: GOTO 300
  208. 2090  REM  
  209. 2100  REM   DATI
  210. 2110  DATA  169,64,160,9,32,217,3,96,0,1,96,1,0,17,0,27,64,0,80,0,0,1,0,0,96,1,0,1,239,216
  211. 2120  DATA  1,32,47,251,32,88,252,32,228,251,32,228,251,162,28,189,72,8,157,173,4,202,208,247,162,39,189,100,8,157,168,5,202,208,247,162,6,189,139,8,157,184,6,202,208,247,162
  212. 2130  DATA  40,189,145,8,157,127,4,202,208,247,142,16,192,142,232,192,174,0,192,224,128,48,249,76,0,198